Remote computing systems can enable users to access resources hosted by the remote computing systems. Servers on the remote computing systems can execute programs and transmit signals indicative of a user interface to clients that can connect by sending signals over a network conforming to a communication protocol such as the TCP/IP protocol. Each connecting client may be provided a session, i.e., an execution environment that includes a set of resources. Each client can transmit signals indicative of user input to the server and the server can apply the user input to the appropriate session. The clients may use protocols such as the Remote Desktop Protocol (RDP) to connect to a server resource.
However, the decoding and rendering of the image data on the client computers typically requires a great deal of resources. Such resources include computational cycles, memory for frame buffers, and network bandwidth. In order to improve the user experience, the image frames may be divided into data tiles so that only the changed tiles are transmitted. Client devices typically employ front and back buffers so that one buffer can receive new frame data while the other is used to drive the current display. However, if only the changed tiles are stored in the buffer, the unchanged tiles will contain stale data and the rendered image may display tearing or other undesirable effects. To avoid these effects, the unchanged tiles must be transferred from one buffer to the other. However, such memory transfers takes time and slows down the rendering process. Thus, other techniques are needed in the art to solve the above described problems.